草庐IT

c++ - DrawText VS TextOut Win32

全部标签

在 Windows 中打印到控制台时需要回车吗?

好像只放一个换行就够了,但我知道应该是回车+换行。如果你不放回车而只使用换行,会发生什么可怕的事情吗?这是在ANSIC中,不会被重定向到文件或其他任何东西。只是一个普通的控制台应用程序。 最佳答案 Windows控制台遵循与文件或实际物理终端相同的行结束约定。它需要同时看到CR和LF才能正确移动到下一行。也就是说,在ANSIC程序和控制台之间有很多软件基础设施。特别是,任何标准C库I/O函数都会尝试做正确的事情,前提是您允许它这样做。这就是为什么为mode参数定义了fopen()的t和b修饰符。使用t(大多数流的默认设置,特别是st

c++ - Windows 上的中介层

是否可以替代系统功能,就像在Linux和Solaris上使用LD_PRELOAD一样例如通过设置环境变量:LD_PRELOAD=/path/to/mymalloc.so我会使用我的替代malloc函数,而不是在已经安装在系统库中的C运行时中。系统dll中的所有其他功能将正常运行。 最佳答案 MicrosoftResearch有一个名为Detours的库这允许您拦截Win32API调用。DetoursisalibraryforinstrumentingarbitraryWin32functionsonx86,x64,andIA64ma

windows - SHGetSpecialFolderPath,如何从 32 位应用程序访问 64 位 CSIDL

有没有办法让在64位系统上运行的32位应用程序访问64位应用程序的默认文件夹?例如,在32位应用程序中将SHGetSpecialFolderPath与CSIDL_PROGRAM_FILES结合使用会返回“C:\从32位应用程序获取“C:\ProgramFiles”的方法?这里的一个相关问题没有帮助SHGetFolderPath()32bitvs64bit在调用SHGetSpecialFolderPath之前也不会抑制wow64文件系统重定向 最佳答案 回答我自己的问题,SHGetSpecialFolderPath似乎是不可能的。在V

c++ - 从(打开的)Solaris 交叉编译到 Windows?

有什么方法可以从Solaris或OpenSolaris设置交叉编译Windows(XP、Vista、Win7)的C/C++代码,最好是64位和32位(对于Vista和Win7)?我的代码库已经是跨平台的,我想从Solaris或Linux交叉编译它(生成WindowsDLL和EXE)作为自动化过程的一部分。我想使用GCC套件,如果可能的话,我宁愿不需要使用CygwinDLL。如果可能,我在Solaris环境中需要哪些工具?我将如何编译/链接整个项目?如果这在Solaris中不可能,考虑到我想要我提到的所有Windows版本的32位和64位二进制文​​件,我应该如何从Linux开始?在此先

java - win32 从 C++ 代码中读取 Java 首选项

我们的一个程序在Java首选项中写入程序信息(窗口标题、内存等)。在Windows上,这在注册表下可用。如何使用c(或c++)读取Java程序编写的值。看起来我应该使用的API是RegGetValue。这是否保证可以在WindowsXP32位上运行?java写的String是UTF-8编码的。我如何在windows(win32或vc++)中读取这样的字符串干杯,贾安 最佳答案 我对此进行了深入研究。RegGetValue()是一个新的注册表调用,它处理传统查询注册表(RegQueryValueEx)方式的一些潜在问题。这里有一些关于

windows - 获取 Windows 架构(32/64 位版本)

我遇到了一个小问题:我想了解操作系统的架构,问题是我的编程语言不支持此类功能。因此,我需要从Windowsdll(如kernel32.dll)中读取此信息我确实尝试使用函数GetNativeSystemInfo/GetVersionEx/GetSystemInfo获取信息。不幸的是我无法获得架构:/在任何windowsdll中是否有一些其他的函数来读取架构?(它不需要是kernel32它可以是任何dll但它必须存在于winxp+中)作为信息:我正在使用Gupta(SQLWindows/Teamdevoloper)编辑1:typedefstruct_SYSTEM_INFO{union{D

windows - 为 Win32 编译 OpenSSL 时出错

尝试在Win32上构建OpenSSL时出现以下错误:C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\INCLUDE\errno.h(92):errorC2220:warningtreatedaserror-no'object'filegeneratedC:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\INCLUDE\errno.h(92):warningC4005:'EADDRINUSE':macroredefinitiontmp32\e_os.h(153):seepreviousde

windows - win32 : destroy a deskstop created with CreateDesktop

CreateDesktop()的反义词是什么?CloseDesktop()似乎只是关闭新桌面的句柄,而不是删除它。 最佳答案 IIRC,桌面是引用计数的,所以当没有人再使用它们时它们就会被销毁(并且有一个未关闭的句柄包含在“正在使用”中)。 关于windows-win32:destroyadeskstopcreatedwithCreateDesktop,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

windows - Win32/MFC 应用程序开发选项

我仍在使用VisualC++2003来维护和增强基于PC的程序。它是用C和C++编写的,只在PC上运行——而不是在网络、手机、云或其他任何地方——我不知道这个.NET框架是什么,可能不需要这个时候要注意。无论如何,现在我已经将我的开发PC升级到Windows7,运行旧的开发环境变得越来越不方便。我认为最新的完整版VisualStudio2010仍可用于构建我的项目,但成本实在令人不快。至少在2003年,他们以大约100美元的价格单独提供VisualC++,但免费赠品VisualC++.NET2010对我一点好处都没有。那么现在有没有VisualStudioPro的替代品?如果我能找到替

windows - msinfo32 无法在 Windows XP 下的 NSIS 中运行

以下NSIS行由于某种原因拒绝在WindowsXP下运行(立即返回):ExecWait'"$PROGRAMFILES\CommonFiles\MicrosoftShared\MSInfo\msinfo32"/report"$DESKTOP\msinfo.log"'如果我在命令行中运行msinfo32,它会正常运行:C:\DocumentsandSettings\Admin>"%PROGRAMFILES%\CommonFiles\MicrosoftShared\MSInfo\msinfo32"/report"%APPDATA%\..\Desktop\msinfo.log"为什么?我该如何